package main

import (
	"errors"
	"fmt"
	"io/fs"
	"os"
)

func main() {
	//Is 报告 err 链中的任何错误是否与目标匹配。
	//
	//该链由 err 本身和通过重复调用 Unwrap 获得的错误序列组成。
	//
	//如果错误等于该目标，或者如果它实现了 Is(error) bool 方法使得 Is(target) 返回 true，则认为该错误与该目标匹配。
	//
	//错误类型可能提供 Is 方法，因此可以将其视为等同于现有错误。 例如，如果 MyError 定义了

	if _, err := os.Open("non-existing"); err != nil {
		if errors.Is(err, fs.ErrNotExist) {
			fmt.Println("file does not exist")
		} else {
			fmt.Println(err)
		}
	}
}
